#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int maxn = 100010;
const int P = 131;
ull p[maxn], h[maxn];  // 把这个ull改成int会产生Segment Fault???
int n, m;
char s[maxn];
ull Hash(int l, int r) {
  return h[r]-h[l-1] * p[r-l+1];
}
void init() {
  p[0] = 1;
  for(int i=1; i<=n; ++i) {
    h[i] = h[i-1]*P+s[i];
    p[i] = p[i-1]*P;
  }
}
int main() {
  cin>>n>>m>>s+1;
  init();
  while(m--) {
    int l1, r1, l2, r2;
    cin>>l1>>r1>>l2>>r2;
    cout<<(Hash(l1, r1)==Hash(l2, r2)? "Yes\n":"No\n");
  }
}
